home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Windows Expert
/
Windows Expert.iso
/
windownt
/
newmk.zip
/
INC
/
SHRMEM.H
< prev
Wrap
Text File
|
1992-09-01
|
4KB
|
123 lines
/************************************************************************\
* The enclosed files, "the software," is provided by
* Microsoft Corporation "as is" without warranty of any kind.
* MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE. You assume all risks of
* using the software.
*
* The software is Copyright (c) 1992 Microsoft Corporation.
* Original Author: John M. Hall, Microsoft SDE 9/1/92
*
* You are granted the right to freely distribute this software.
* You are granted the right to make changes provided this comment block
* is retained without modification and you acknowledge the changes.
*
\************************************************************************/
/************************************************************************\
*
* SHRMEM.H
*
\************************************************************************/
#ifndef SHRMEM_DLL_H
#define SHRMEM_DLL_H
/************************************************************************\
* SYMBOLIC CONSTANTS
\************************************************************************/
#define FREE 0x00
#define EXCLUSIVE 0x01
#define SHARED 0x02
#define HEAD 0xF0
#ifdef SHRMEM_DLL_C
#define ALLFFS 0xFFFFFFFF
#define SZ_MEMORY (1024 * 1024)
#define SZ_CONTROL (1024 * 64)
#define NUMBER_ELEM 256
#define MUNGE 37
/************************************************************************\
* GLOBAL SHARED VARIABLES
\************************************************************************/
DWORD dwPageSize;
DWORD dwProcesses;
int iiUnused;
LPVOID lpTryBase;
DWORD dwBase;
DWORD dwLength;
/************************************************************************\
* GLOBAL NON-Shared VARIABLES
\************************************************************************/
HANDLE hMod = NULL;
HANDLE hSemaphore = NULL;
HANDLE hMemory = NULL;
LPVOID lpMemBase = NULL;
HANDLE hControl = NULL;
LPVOID lpCtrlBase = NULL;
DWORD dwProcessID = 0;
FILE *fp_log = NULL;
/************************************************************************\
* MACROS
\************************************************************************/
#define MAKE_PTR(a,b) ((LPVOID)((DWORD)(a) + (b)))
#define MUNGEIT(a) ( ((a)+1)* MUNGE)
#define UNMUNGE(a) ( ((a)/MUNGE)-1)
// turn the wOffset (in pages) into a LPVOID
#define MAKE_LPV(a) ((LPVOID) ((DWORD)lpMemBase + (dwPageSize * (a))))
#ifdef DEBUG
#define AssertBox(a,b) if (!(a)) MyAssertBox((b), #a, __FILE__, __LINE__)
#else
#define AssertBox(a,b)
#endif
/************************************************************************\
* STRUCTURES
\************************************************************************/
typedef struct {
DWORD dwProcessID;
WORD wOffset;
WORD wLength;
SHORT sNext;
SHORT sPrior;
ATOM aName;
UCHAR uchLock;
UCHAR uchFlags;
} FREE_ELEMENT;
typedef FREE_ELEMENT *FEP;
#endif
/************************************************************************\
* FLAGS
\************************************************************************/
#define SHR_MEM_FREE 0x00
#define SHR_MEM_ALLOC 0x01
#define SHR_MEM_INVALID 0x02
/************************************************************************\
* FUNCTION PROTOTYPES
\************************************************************************/
VOID MyAssertBox( const char *, const char *, const char *, int);
DWORD ShrAlloc(DWORD dwSize, UCHAR uchFlags);
LPVOID ShrLock( DWORD hShr);
DWORD ShrUnlock( DWORD hShr);
DWORD ShrFree( DWORD hShr);
BOOL DLLEntryPoint (HANDLE hDLL, DWORD dwReason, LPVOID lpReserved);
BOOL attach_memory(LPTSTR lptstr);
BOOL ShrName(DWORD hShr, LPCTSTR lpsz);
DWORD ShrGet(LPCTSTR lpsz);
VOID ShrDump(void);
#endif // SHRMEM_DLL_H